#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAX_SIZE 100

struct Student {
    int id;
    char name[20];
    float score;
};

int main() {
    struct Student students[MAX_SIZE]; // 学生记录的数组
    int count = 0;                     // 学生记录的数量
    int target_id;                     // 要查询的学生 ID
    int i;

    // 从文件中读入学生记录
    FILE *fp = fopen("students.txt", "r");
    while (count < MAX_SIZE && fscanf(fp, "%d %s %f", &students[count].id, students[count].name, &students[count].score) == 3) {
        count++;
    }
    fclose(fp);

    // 查询指定学生记录
    printf("请输入要查询的学生 ID：");
    scanf("%d", &target_id);
    for (i = 0; i < count; i++) {
        if (students[i].id == target_id) {
            printf("学生 ID：%d\n姓名：%s\n分数：%.2f\n", students[i].id, students[i].name, students[i].score);
            students[i].score = 100.0; // 修改分数为 100
            break;
        }
    }
    if (i == count) {
        printf("没有找到 ID 为 %d 的学生记录\n", target_id);
    }

    // 将修改后的学生记录写回文件
    fp = fopen("students.txt", "w");
    for (i = 0; i < count; i++) {
        fprintf(fp, "%d %s %.2f\n", students[i].id, students[i].name, students[i].score);
    }
    fclose(fp);

    return 0;
}
